package modelo;

import java.util.ArrayList;
import java.util.List;
import java.util.Observable;

import modelo.exception.ProyectoYaExistenteException;

/**
 * 
 * @author rocio
 *
 */
public class SistemaPrincipal extends Observable{
	

	// Variables  *********************************************************** //
	private List<Proyecto> proyectos = new ArrayList<Proyecto>();
	private List<Usuario> usuarios = new ArrayList<Usuario>(); 
	 
	
	//Constructor *********************************************************** //
	
	public SistemaPrincipal(List<Proyecto> proyectos, List<Usuario> usuarios) {
		this.proyectos = proyectos;
		this.usuarios = usuarios;
	}

	//Metodos     *********************************************************** //
	/**
	 * Agrega un proyeecto a la lista de proyectos
	 * @param proyecto
	 * @throws ProyectoYaExistenteException 
	 * 
	 */
	public void agregarProyecto (Proyecto proyecto) throws ProyectoYaExistenteException{
		for (Proyecto p : this.proyectos) {
			if(p.getNombre().equalsIgnoreCase(proyecto.getNombre())){
				throw new ProyectoYaExistenteException("Ya existe un proyecto con ese nombre");	
			}
		}
		this.proyectos.add(proyecto);
		onChange();
	}

	/**
	 * Metodo que avisa a los observadores que la lista de proyectos ha cambiado
	 */
	public void onChange() {
		this.setChanged();
		this.notifyObservers(null);
	}
	
	/**
	 * Elimina un proyecto de la lista de proyectos
	 * @param p
	 */
	public void eliminarProyecto (Proyecto proyecto){
		if (this.proyectos.contains(proyecto)){
			this.proyectos.remove(proyecto); 
			
		}
	}
	
	//GET&SET     *********************************************************** //

	public void setProyectos(List<Proyecto> proyectos) {
		 this.proyectos = proyectos;
	}

	public List<Proyecto> getProyectos() {
		return proyectos;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}

}

